package ExerciseOne;

import java.util.Scanner;
import java.util.Vector;
/*
 * 利用Vector代替数组处理：从键盘读入学生成绩（以负数代表结束输入），找出最高分，并输出学生成绩等级。
 * 提示：数组一旦创建，长度就固定不变，所以在创建数组前就需要知道它的长度。
 * 而向量类java.util.Vector可以根据需要动态伸缩。
 * 
 * 创建Vector对象：Vector v = new Vector();
 * 给向量添加元素：v.addElement(Object obj);  //obj必须是对象
 * 取出向量中的元素：Object obj = v.elementAt(0);
 * 注意第一个元素的下标是0.返回值是Object类型的。
 * 计算向量的长度：v.size();
 * 若与最高分相差10分内：A等，20分内：B等；30分内：C等，其他：D等；
 */
public class WrapperScoreTest {

	public static void main(String[] args) {
		//创建对象，接收数据
		Scanner scan = new Scanner(System.in);
		int maxScore =0;
		Vector v = new Vector();
		for(;;)
		{
			System.out.println("请输入学生成绩(以负数代表输入结束)");
			int score = scan.nextInt();
			if(score < 0)
			{
				break;
			}
			if(score > 100)
			{
				System.out.println("输入的数据非法：请重新输入数据");
				continue;
			}
			//JDK 5.0以前
//			Integer inScore = new Integer(score);
//			v.addElement(inScore);多态性
			//JDK 5.0以后
			v.addElement(score);//自动装箱，添加学生分数
			if(maxScore < score)
			{
				maxScore = score;
			}
		}
		char level;
		for(int i=0;i<v.size();i++)
		{
			Object obj = v.elementAt(i);//取学生分数
			//JDK 5.0以前
//			Integer inScore = (Integer)obj;
//			int score = inScore.intValue();
			//JDK 5.0以后
			int score = (int)obj;//自动拆箱
			if(maxScore - score <= 10)
			{
				level = 'A';
			}
			else if(maxScore - score <= 20)
			{
				level = 'B';
			}
			else if(maxScore - score <= 30)
			{
				level = 'C';
			}
			else
			{
				level = 'D';
			}
			System.out.println("student "+ (i+1)+" score is "+ score+" grade is "+level);
		}
	}

}
